#include <attrib.h>
#include "CuTest.h"

void TestAttribNew(CuTest *tc) {
	attrib_p attrib = attrib_new("123","abc");
	CuAssertPtrNotNull(tc, attrib);
}

void TestAttribGetKey(CuTest *tc) {
	attrib_p attrib = attrib_new("123","abc");
	CuAssertStrEquals(tc, "123", attrib_get_key(attrib));
}

void TestAttribSetKey(CuTest *tc) {
	attrib_p attrib = attrib_new("123", "abc");
	attrib_set_key(attrib, "456");
	CuAssertStrEquals(tc, "456", attrib_get_key(attrib));
}

void TestAttribGetValue(CuTest *tc) {
	attrib_p attrib = attrib_new("123", "abc");
	CuAssertStrEquals(tc, "abc", attrib_get_value(attrib));
}

void TestAttribSetValue(CuTest *tc) {
	attrib_p attrib = attrib_new("123", "abc");
	attrib_set_value(attrib, "def");
	CuAssertStrEquals(tc, "def", attrib_get_value(attrib));
}

void TestAttribCmpEqual(CuTest *tc) {
	attrib_p attrib = attrib_new("123", "abc");
	CuAssertIntEquals(tc, 0, attrib_cmp(attrib, attrib));
}

void TestAttribCmpNameDiff(CuTest *tc) {
	attrib_p a1 = attrib_new("1","a");
	attrib_p a2 = attrib_new("2","a");
	CuAssertIntEquals(tc, -1, attrib_cmp(a1, a2));
}

void TestAttribCmpValueDiff(CuTest *tc) {
	attrib_p a1 = attrib_new("1","a");
	attrib_p a2 = attrib_new("1","b");
	CuAssertIntEquals(tc, 1, attrib_cmp(a1, a2));
}

void TestAttribFree(CuTest *tc) {
	attrib_p attrib = attrib_new("","");
	attrib_free(attrib);
	CuAssert(tc, "free failed", 1);
}

